Ví dụ Visitor_pattern

Sau đây là một ví dụ đơn giản minh họa áp dụng của mẫu thiết kế trên và cũng để hiểu rõ thêm về cài đặt của nó.

Sơ đồ lớp của ví dụ bằng UML

Tập tin:Wiki visitor.png

Cài đặt bằng Java

Sau đây là cài đặt của ví dụ trên bằng ngôn ngữ Java

interface Visitor { public void visit(Wheel wheel); public void visit(Engine engine); public void visit(Body body); public void visit(Car car);}//differing from above displayed UML: Additional use of an interface 'Element'interface Element { public void accept(Visitor visitor);}/* Concrete element */class Wheel implements Element { private String name; Wheel(String name) { this.name = name; } String getName() { return this.name; } public void accept(Visitor visitor) { visitor.visit(this); }}/* Concrete element */class Engine implements Element{ public void accept(Visitor visitor) { visitor.visit(this); }}/* Concrete element */class Body implements Element{ public void accept(Visitor visitor) { visitor.visit(this); }}/* Concrete element */class Car implements Element { private Engine engine = new Engine(); private Body body = new Body(); private Wheel[] wheels  = { new Wheel("front left"), new Wheel("front right"), new Wheel("back left"), new Wheel("back right") }; public void accept(Visitor visitor) { visitor.visit(this); engine.accept(visitor); body.accept(visitor); for(int i=0; i<wheels.length; ++i) wheels[i].accept(visitor); }}/* Concrete visitor */class PrintVisitor implements Visitor { public void visit(Wheel wheel) { System.out.println("Visiting "+wheel.getName()  +" wheel"); } public void visit(Engine engine) { System.out.println("Visiting engine"); } public void visit(Body body) { System.out.println("Visiting body"); } public void visit(Car car) { System.out.println("Visiting car"); }}public class VisitorDemo { public static void main(String[] args){ Car car = new Car(); Visitor visitor = new PrintVisitor(); car.accept(visitor); }}